package com.ruoyi.workflow.service;

import java.io.InputStream;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.business.domain.ServiceItem;
import com.ruoyi.workflow.domain.CarPackageAudit;

/**
 * 套餐审核Service接口
 *
 * @author shier
 * @date 2022-11-17
 */
public interface ICarPackageAuditService extends IService<CarPackageAudit> {

    /**
     * 查询套餐审核列表
     *
     * @param carPackageAudit 套餐审核
     * @return 套餐审核集合
     */
    List<CarPackageAudit> selectCarPackageAuditList(CarPackageAudit carPackageAudit);

    /**
     * 在服务项里发起审核
     *
     * @param serviceItemId 服务项ID
     * @param info          审核备注
     */
    void audit(Long serviceItemId, String info);

    /**
     * 审核操作
     *
     * @param id     审核记录ID
     * @param taskId 任务ID
     * @param result 审核结果
     * @param info   批注信息
     */
    void doAudit(Long id, String taskId, boolean result, String info);

    /**
     * 重新发起审核
     *
     * @param id     审核记录ID
     * @param taskId 任务ID
     */
    void reapply(Long id, String taskId);

    /**
     * 查看流程图
     *
     * @param instanceId 流程实例ID
     * @return           查看流程图的流
     */
    InputStream getProcessingImage(String instanceId);

    /***
     * 撤销审核
     *
     * @param id     审核记录ID
     * @param reason 撤销理由
     */
    void cancel(Long id, String reason);

    /**
     * 更新审核记录里的 服务项
     *
     * @param serviceItem 服务对象
     * @param auditId     审核记录ID
     */
    void updateServiceItem(ServiceItem serviceItem, Long auditId);
}
